package com.java.st.lib.tools.exception;

/**
 * 业务异常类,处理业务相关所有可预见的异常,如ID重复,年龄非法,查询ID不存在等
 * Java异常体系说明:
 * 异常基类是Throwable,有两个子类Error和Exception Error,一般程序无法处理
 * Exception,又包含CheckedException(所有需要显式try...catch的Exception)和UncheckedException(调用者无需处理的Exception)
 * 因为CheckedException需要在抛出异常与捕获处理异常的地方之间,层层定义throwsXXX来传递Exception,破坏了封装
 * 详见《Clean Code》,不再推荐CheckedException
 * J2EE Spring体系中,处理异常,建议两种方式
 * 1.通过Spring AOP,使用@AfterThrowing进行异常统一处理(记录日志,发邮件等),在控制层try...catch
 * 2.MVC体系中,使用@ControllerAdvice+@ExceptionHandler进行异常统一处理,控制层不需要try...catch
 */
public class ServiceException extends RuntimeException {

	private static final long serialVersionUID = 988592186626034036L;

	public ServiceException(String arg0) {
		super(arg0);
	}

	public ServiceException(Throwable arg1) {
		super(arg1);
	}

	public ServiceException(String arg0, Throwable arg1) {
		super(arg0, arg1);
	}
}
